草庐IT

<七>lambda表达式实现原理

全部标签

Ruby 正则表达式 - 用文本中间的空格替换点

我有一个很长的文本,我想用空格替换其中的点,但只能在文本的中间。例如:Domain:...................google.com我需要这样:Domain:google.com我发现了这个用单个空格替换点的正则表达式:str.gsub!(/(?但这还不够,因为它会产生:Domain:google.com我需要保留与点一样多的空格。你会如何解决? 最佳答案 你快到了,你的正则表达式没问题,只需使用String#gsub的block版本计算替换匹配的长度:▶str='Domain:...................goo

ruby -/lib 中的 <appname>.rb 文件在 Ruby 项目中通常用于什么?

引用这个问题:Idealrubyprojectstructure我注意到appname.rb在lib中,并且是顶级。我在Github上阅读了一些Rake源代码,我注意到他们的项目结构几乎相同。他们在/lib中有一个顶级“rake.rb”文件,但我不确定它的用途。在ThePickaxe(ProgrammingRuby1.9)中,他们展示了一个构建小型项目的示例,其目录结构与上面几乎相同,但没有提及/lib中顶级.rb的用法。所以,我的问题是:这个东西在Ruby项目中通常用于什么?抱歉,如果这是一个愚蠢的问题,我敢肯定,但我对Ruby还比较陌生。我现在不太了解Ruby-foo。;)谢谢。

ruby - 在正则表达式中使用否定条件

是否可以在gsub表达式中使用否定匹配?我想替换以hello开头的字符串except以helloPeter开头的字符串>my-string.gsub(/^hello@/i,'')我应该用什么代替@? 最佳答案 听起来你想要一个负面的前瞻:>>"hellofoo".gsub(/hello(?!peter)/,'lala')#=>"lalafoo">>"hellopeter".gsub(/hello(?!peter)/,'lala')#=>"hellopeter" 关于ruby-在正则表达式

ruby-on-rails - Ruby 中的 ->() { } 是什么?

我刚刚在Ruby/Rails应用程序中看到了这个表达式:defmethod(a,b=nil,&c)c||=->(v){v}我理解第一部分,但不理解->(){...}语法。什么意思?为简洁起见,变量名称已更改。我尝试搜索,但非字母数字字符显然是SEO的噩梦。 最佳答案 它是一个lambda字面量。将block变量放在()中,将主体放在{}中。->(x,y){x+y}在示例中,->(v){v}接受一个参数v并返回它,换句话说,它是一个恒等函数。如果一个block被传递给method,那么它被分配给c。如果不是,恒等函数默认分配给c。

ruby-on-rails - 为什么表达式 "a, b = 5"在 Ruby 中将 a 设置为 5,而将 b 设置为 nil?

(irb)a,b=5a=>5b=>nil不应该反过来吗?这里到底发生了什么? 最佳答案 在我写这篇文章时,我的同事发现了原因:Ruby将a,b=5视为a,b=5,nil在Python3中,抛出一个TypeError。 关于ruby-on-rails-为什么表达式"a,b=5"在Ruby中将a设置为5,而将b设置为nil?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/314621

ruby-on-rails - NoMethodError:#<RSpec::ExampleGroups::CompetitionsController::Create> 的未定义方法 `mock'

Variants这个问题已被多次问到,但大多数都与摩卡有关,而我没有使用它。我是Rails的新手,所以这看起来微不足道,但我无法在我的规范文件中使用mock(用于名为competitions的Controller)。require'rails_helper'require'spec_helper'describeCompetitionsControllerdobefore:eachdo@fake_c=mock(Competition,:competition_id=>1,:competition_name=>'one',:competition_des=>'any')enddescri

ruby - Ruby 中的正则表达式负后视似乎不起作用

制作参数解析器。我想将一个字符串拆分为一个分隔符为","的数组除非前面有"|".这意味着字符串"foo,ba|,r,arg"应该导致`["foo","ba|,r","arg"]`我正在尝试使用这个正则表达式:(?适用于http://regexhero.net/tester/但是当我尝试args.split(/(?在ruby​​中,我得到一个错误:undefined(?...)sequence:/(? 最佳答案 Ruby的正则表达式引擎还不支持lookbehind。您需要切换到1.9或使用Oniguruma.如果这不是一个选项,您可以

Ruby 正则表达式,只有一次捕获(非常简单!)

我想这将是一个愚蠢的错误,但对我来说,以下返回一个仅包含“M”的数组。看这个:/(.)+?/.match("Manymanycharacters!").captures=>["M"]为什么它不返回每个字符的数组?我一定是错过了一些明显的东西,因为我看不出这有什么问题?编辑:刚刚意识到,我不需要+?但没有它仍然无法工作。编辑:抱歉!我会澄清:我的目标是让用户输入正则表达式和样式以及输入文本文件,只要有匹配项,文本就会被html元素包围并应用样式,我不只是拆分将字符串转换为字符,我只使用了给定的正则表达式,因为它是最简单的,尽管这对我来说很愚蠢。我如何从scan()获取捕获组或者这是不可能

ruby (在 Rails 上)正则表达式 : removing thousands comma from numbers

这看起来很简单,但我遗漏了一些东西。我有大量来自各种来源和不同格式的输入。数字输入123123.45123,45(notethecommausedheretodenotedecimals)1,2341,234.5612,345.6712,345,67(notethecommausedheretodenotedecimals)关于输入的附加信息数字永远小于100万编辑:这些是价格,因此要么是整数,要么是百分之一我正在尝试编写一个正则表达式并使用gsub去除千位逗号。我该怎么做?我写了一个正则表达式:myregex=/\d+(,)\d{3}/当我在Rubular中测试它时,它表明它只在我想

'=>' (hashrocket) 的 Ruby 语法

我试过这个earlier每个人都开始使用救援block语法。请不要去那里。给定以下工作代码:begin(1..1000).eachdo|i|putsisleep1endrescueException=>eputs"\nCaughtexception..."puts"Exceptionclass:#{e.class}"end在它运行时按CTRL+C会打印出“Caughtexception...”,正如预期的那样。救援行中的语法方面到底发生了什么,特别是在Exception和变量e之间,=>在两者之间?“rescue”这个词是关键字……是ruby​​语言的一部分。“e”是一个变量,在功能上